0. Avant -propos
Cette page sert à acquérir ou consolider les bases de programmation que vous avez dû aborder depuis la seconde.
Ici on repart de zéro afin d'obtenir les compétences pour réussir en Python en Physique Chimie.
Cette page contient :
-
Des capsules vidéos qui permettent :
-
soit de découvrir les notions fondamentales en python,
-
soit surtout de reprendre chez vous des points sur lesquels vous ne vous sentez pas très à l'aise ou pour vous
remémorer le contenu.
-
Des rappels écrits des notions avec des exemples,
-
Des exercices fondamentaux, ceux où apparaisent la balise "fondamental", à savoir faire pour aborder sereinement l'examen,
-
Des exercices de renforcement, ceux en fin de page où apparaisent la balise "renforcement" et accessible directement par un lien,
pour s'assurer que les exercices fondamentaux sont maîtrisés,
-
Quelques exercices plus poussés, ceux étiquetés par la balise "confirmé".
C'est ce niveau d'exercices qu'il faut essayer d'atteindre en fin de terminale.
Un environement de travail : installation et prise en main
Nous utiliserons principalement le logiciel Edupython, qui est déjà présent sur les ordinateurs du lycée 4.0 et très utilisé en mathématiques. Cependant nous aborderons aussi l'utilisation du notebook Jupyter
Avant toute chose, si ce n'est pas le cas nous allons installer la dernière version d'édupython, à l'aide de la capsule suivante:
Dans le cas où Edupython ne marcherait pas sur vos machines, vous pouvez réaliser l'ensemble des exercices dans la fenètre ci-dessous :
Pour une première prise en main d'édupython :
Pour une première prise en main d'un notebook Jupyter :
Affectation en Python
En programmation, nous avons besoin de stocker des éléments , de les mettre en mémoire. Pour cela , on procède à l'affectation d'une variable par une donnée.
Pour cela ilfaut commencer par donner un nom à la variable:
Puis on affecte:
En Python, l' affectation se réalise avec l'opérateur =
le script :
a=5
met en mémoire l'entier 5 dans la variable a
a=4.8
met en mémoire le réel 4,8 dans la variable a
a="easy"
met en mémoire la chaine de caractères "easy" dans la variable a
Que vaut a à la fin de ce script :
a=1
b=-1
a=a*b
a=a+b
Un exercice de renforcement, reprenant les mêmes compétences est dispoible directement en cliquant ci-dessous :
exercice de renforcement
Un exercice plus compliqué utilisant l'affectation :
Hervé Trézène aimerait avoir un algorithme permettant de permuter les nombres stockés dans deux variables $a$ et $b$.
Pour simplifier, on suppose que la variable $a$ stocke le nombre 8,
tandis que la variable $b$ stocke le nombre -3.
-
Yves Aladaire propose l'algorithme suivant :
# ceci est un commentaire (il commence par le symbole dièse #) :
# il n'est pas pris en compte par l'interpréteur, il n'est lu que par le programmeur et l'utilisateur : vous.
# mémorisation des valeurs initiales :
a=8
b=-3
# programme proposé par Yves pour la permutation du contenu :
a=b
b=a
-
Compléter sur une feuille la table d'exécution commencée ci-dessous, sans prendre en compte les lignes de commentaires :
ligne numéro
|
valeur stockée dans la variable $a$
|
valeur stockée dans la variable $b$ |
4 |
8 |
rien |
... |
... |
... |
... |
... |
... |
... |
... |
... |
Est-ce le programme proposé par Yves permet d'échanger les valeurs stockées dans les varaibles $a$ et de $b$ ?
-
Amin Bhar propose l'algorithme suivant :
# mémorisation des valeurs initiales :
a=8
b=-3
# programme proposé par Roger pour la permutation du contenu :
b=a
a=b
-
Compléter sur une feuille la table d'exécution commencée ci-dessous, sans prendre en compte les lignes de commentaires :
ligne numéro
|
valeur stockée dans la variable $a$
|
valeur stockée dans la variable $b$ |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
... |
Est-ce le programme proposé par Amine permet d'échanger les valeurs stockées dans les variables $a$ et de $b$ ?
-
Proposer un programme qui permet d'échanger les valeurs stockées dans les variables $a$ et de $b$ ?
Affichage en python
Une chaîne de caractères correspond à un texte pouvant contenir différents symboles.
En Python, une chaîne de caractères est le contenu délimité par ""
.
Pour afficher une chaine de caractères en Python on utilise la fonction print()
, nous pouvons également utiliser cette fonction pour afficher le contenu d'une variable.
Testez ces différents scripts :
-
print("Vive la Chimie !")
-
temperature=22
print(temperature)
-
grandeur_abscisse="Volume"
print("La grandeur en abscisse est:",grandeur_abscisse)
Réaliser un script qui contient deux variables : grandeur_x
, grandeur_y
et qui doit afficher :
"Nous allons tracer la courbe représentative de la vitesse en fonction du temps"
exercice de renforcement
Dialogue avec l'utilisateur
La fonction input()
permet d'ouvrir une boite de dialogue et de récupérer une information saisie par l'utilisateur.
L'information récupérée grâce à un input()
est une chaîne de caractères.
resultat=input("quelle est l'unité SI de vitesse?")
print(resultat)
Ecrire un script en Python qui demande à l'utilisateur, les grandeurs en abscisse et en ordonnée qui réalise un affichage comme dans l'exercice 3.
exercice de renforcement
Comme l'information récupérée grâce à un input
est une chaîne de caractères, il va falloir changer le type de
la variable pour permettre d'effectuer des calculs avec.
Mon professeur désire un programme qui demande à l'utilisateur de saisir la température en dégré celsius,
puis qui affiche la tempérture en kelvin.
(rappel, pour convertir des degrés celsius en kelvin, il faut ajouter 273,15)
-
Testez le script suivant :
t_celsius=input("Saisir la température en degrés celsius")
t_kelvin = t_celsius + 273.15
print("La température en kelvin est de :"",t_kelvin)
-
Quel message d'erreur obtenez-vous ?
-
Testez le script suivant :
t_celsius=float(input("Saisir la température en degrés celsius"))
t_kelvin = t_celsius + 273.15
print("La température en kelvin est de :"",t_kelvin)
-
Quelle est la différence avec le code précédent de cet exemple ?
L'instruction int
permet de changer certaines chaînes de caractères en un nombre entier.
L'instruction float
permet de changer certaines chaînes de caractères en un flottant, c'est-à-dire un
"nombre à virgule".
exercice de renforcement
Instruction conditionnelle en Python
Les tests en Python :
Chaque utilisation de ces tests renvoie une variable qui ne peut prendre que deux valeurs booléenne : True
ou False
;
On parle alors de booléen.
Attention à ne pas confondre :
exécutez le code suivant pour visualiser la différence entre affectation et test d'égalité :
La structure conditionnelle "if"
En Python, voici la structure :
if condition :
instruction(s) à effectuer dans la cas où la condition est remplie
else :
instruction(s) à effectuer dans la cas contraire
Le bloc else
n'est pas obligatoire
Vous remarquerez le symbole :
très important en Python qui marque le début d'un bloc.
C'est l'indentation (=décalage) qui délimite le bloc d'instructions.
temperature=float(input("Saisir la température en degré celsius : "))
if temperature>=0 :
print("La température est positive ou nulle",temperature)
else :
print("La température est négative",temperature)
Qu'affiche le programme de l'exemple dans chacun des cas suivants :
-
Avec temperature=8
?
-
Avec temperature=-6
?
-
Avec temperature=0
?
-
Avec temperature="positif"
?
exercice de renforcement
Vous pouvez tester directement le programme précédent ci-dessous. En appuyant sur la touche Next>, vous visualiserez le fait que l'interpréteur du code
ne traite que l'instruction du if
ou celle du else
suivant si la condition est remplie ou non.
Il est possible d'imbriquer plusieurs instructions conditionnelles ensemble.
On peut détailler l'exemple précédent ainsi en trois cas distinctions par imbrications de deux instructions conditionnelles :
temperature=float(input("Saisir la température en degré celsius : "))
if temperature>0:
print("La température est positive",temperature)
else: # ici, on est dans le cas où temperature<= 0
if temperature==0:
print("La température est nulle",temperature)
else: # ici, on est dans le cas où temperature<=0 et a!=0 donc où a<0
print("La température est négative",temperature)
Il est possible de simplifier l'écriture de ces imbrication en utilisant le mot clé elif
qui est la contraction de else if
.
La structure elif
:
if condition1 :
instruction(s)
elif condition2 :
instruction(s)
elif condition3 :
instruction(s)
else :
instruction(s)
On peut réécrire l'imbrication de l'exemple précédent ainsi :
temperature=float(input("Saisir la température en degré celsius : "))
if temperature>0:
print("La température est positive",temperature)
elif temperature==0:
print("La température est nulle",temperature)
else:
print("La température est négative",temperature)
exercice de renforcement
Boucle itérative : pour/for
La structure "for" avec range
Voici la structure en Python d'une boucle répétitive for
avec range
for i in range(n):
instruction 1
instruction 2
...
Dans cette boucle $i$ prendra les valeurs de 0 à $n-1$.
Toutes les instructions dans la boucle seront appliquées pour chaque valeur de $i$.
Dans cette structure, on connait à l'avance le nombre de répétitions. Dans notre cas, il est égal à $n$.
Cette boucle affiche la valeur de i à chaque tour de boucle
# boucle effectuant 10 tours
for i in range(10):
print ("Pour ce tour de boucle i vaut:",i)
Vérifier que le résultat affiché correspond bien à i allant de 0 à 9 et qu'il y a bien 10 tours de boucle
Vous pouvez visualiser les différentes étapes mises en oeuvre par cet algorithme ci-dessous :
Plus généralement, lors de l'instruction for i in range(m,n)
, où m
et n
sont deux entiers tels que
n>m
, i
prend toutes les valeurs entières entre m
et n-1
.
Écrire un script qui calcule la moyenne de 10 températures saisies par l'utilisateur
exercice de renforcement
exercice de renforcement
Boucle itérative : while
La structure while
Voici la structure en Python d'une boucle while
while condition:
instruction 1
instruction 2
...
Tant que la condition
est vraie les instructions du bloc
sont exécutées.
Dans cette structure, on ne connait pas à l'avance le nombre de répétitions.
Deux écueils à éviter :
-
Ne jamais entrer dans une boucle : si la condition au départ vaut False
, la boucle while
ne sera jamais exécutée.
-
Tourner indéfiniment : Si la condition ne change jamais de valeur, la boucle ne s'arrêtera pas et l'algorithme
restera bloqué sur le while
.
exercice de renforcement
Exercices de renforcement
Sur l'affectation
Quel nombre est stcokée dans la variable $a$ à la fin de ce script :
a=5
a=2*a
b=2*a
a=a*a
a=a-b+1
Pour accéder au code de la correction : lien
Sur l'affichage
Pour accéder au code de la correction : lien
Sur la saisie
Pour accéder au code de la correction : lien
Pour accéder au code de la correction : lien
Sur l'instruction conditionnelle
Pour accéder au code de la correction : lien
Pour accéder au code de la correction : lien
Sur la boucle répétitive for
Pour accéder au code de la correction : lien
Pour accéder au code de la correction : lien
Pour accéder au code de la correction : lien
Sur la boucle répétitive conditionnelle while
Pour accéder au code de la correction : lien